#include <iostream>

using namespace std;
const int N=110;
int arr[N],m,n;
bool dfs(int u,int depth)
{
	if(u>depth)
		return false;
	if(u==depth)
		return arr[u-1]==n;
	int st[N]={0};
	for(int i=u-1;i>=0;i--)
	{
		for(int j=i;j>=0;j--)
		{
			int s=arr[i]+arr[j];
			if(s>n || st[s] || s<=arr[u-1])
				continue;		
			st[s]=1;
			arr[u]=s;
			if(dfs(u+1,depth))
			{
				return true;
			}
			
		}	
	}
	return false;
}
int main()
{
	
	
	arr[0]=1;
	while(cin>>n,n)
	{
		int depth=1;
		while(!dfs(1,depth))
		{
			depth++;
		}
		
		for(int i=0;i<depth;i++)
		{
			cout<<arr[i]<<' ';
		}
		cout<<endl;
	}
	return 0;
}
